package com.zzjx.log.config;

import org.slf4j.TtlMDCAdapter;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;

/**
 * 初始化TtlMDCAdapter实例，并替换MDC中的adapter对象
 *
 * @author zhaojiaxu
 * @date 2021/07/19 15:32
 */
public class TtlMDCAdapterInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {

    //ApplicationContextInitializer是在springboot启动过程(refresh方法前)调用,
    // 主要是在ApplicationContextInitializer中initialize方法中拉起了ConfigurationClassPostProcessor这个类(我在springboot启动流程中有描述)
    // 通过这个processor实现了beandefinition
    //在springboot启动run之后执行prepareContext的applyInitializers时候执行，这时候容器还没有进行refresh
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        //加载TtlMDCAdapter实例
        TtlMDCAdapter.getInstance();
    }
}

